package luadb

import (
	lua "github.com/yuin/gopher-lua"
)

//InitLuaDB 注册默认函数
func InitLuaDB(l *lua.LState) {
	l.SetGlobal("exec", l.NewFunction(Exec))
	l.SetGlobal("insert", l.NewFunction(Insert))
	l.SetGlobal("Exec", l.NewFunction(Exec))
	l.SetGlobal("Insert", l.NewFunction(Insert))
	l.SetGlobal("DataTable", l.NewFunction(DataTable))

	mt := l.NewTypeMetatable(luaRowsTypeName)
	l.SetGlobal(luaRowsTypeName, mt)
	l.SetField(mt, "new", l.NewFunction(newRows))
	l.SetField(mt, "next", l.NewFunction(rowsNext))
	l.SetField(mt, "close", l.NewFunction(rowsClose))
	l.SetField(mt, "data", l.NewFunction(rowsData))
	l.SetField(mt, "__index", l.SetFuncs(l.NewTable(), map[string]lua.LGFunction{
		"new":   newRows,
		"next":  rowsNext,
		"close": rowsClose,
		"data":  rowsData,
	}))

	// mt = l.NewTypeMetatable(luaTxTypeName)
	// l.SetGlobal(luaTxTypeName, mt)
	// l.SetField(mt, "new", l.NewFunction(newTx))
	// l.SetField(mt, "commit", l.NewFunction(txCommit))
	// l.SetField(mt, "rollback", l.NewFunction(txRollback))
	// l.SetField(mt, "prepare", l.NewFunction(txPrepare))
	// l.SetField(mt, "exec", l.NewFunction(txExec))
	// l.SetField(mt, "insert", l.NewFunction(txInsert))
	// l.SetField(mt, "query", l.NewFunction(txQuery))
	// l.SetField(mt, "__index", l.SetFuncs(l.NewTable(), map[string]lua.LGFunction{
	// 	"new":      newRows,
	// 	"commit":   txCommit,
	// 	"rollback": txRollback,
	// 	"prepare":  txPrepare,
	// 	"exec":     txExec,
	// 	"insert":   txInsert,
	// 	"query":    txQuery,
	// }))

	// mt = l.NewTypeMetatable(luaSessionTypeName)
	// l.SetGlobal(luaSessionTypeName, mt)
	// l.SetField(mt, "new", l.NewFunction(newSession))
	// l.SetField(mt, "commit", l.NewFunction(sessionCommit))
	// l.SetField(mt, "rollback", l.NewFunction(sessionRollback))
	// l.SetField(mt, "close", l.NewFunction(sessionClose))
	// l.SetField(mt, "exec", l.NewFunction(sessionExec))
	// l.SetField(mt, "insert", l.NewFunction(sessionInsert))
	// l.SetField(mt, "query", l.NewFunction(sessionQuery))
	// l.SetField(mt, "__index", l.SetFuncs(l.NewTable(), map[string]lua.LGFunction{
	// 	"new":      newSession,
	// 	"commit":   sessionCommit,
	// 	"rollback": sessionRollback,
	// 	"close":    sessionClose,
	// 	"exec":     sessionExec,
	// 	"insert":   sessionInsert,
	// 	"query":    sessionQuery,
	// }))
}
